home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / bash_114.zip / bash-1.14.2 / builtins / psize.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-11-12  |  1.5 KB  |  64 lines

  1. /* psize.c - Find pipe size. */
  2.  
  3. /* Copyright (C) 1987, 1991 Free Software Foundation, Inc.
  4.  
  5.    This file is part of GNU Bash, the Bourne Again SHell.
  6.  
  7.    Bash is free software; you can redistribute it and/or modify it
  8.    under the terms of the GNU General Public License as published by
  9.    the Free Software Foundation; either version 1, or (at your option)
  10.    any later version.
  11.  
  12.    Bash is distributed in the hope that it will be useful, but WITHOUT
  13.    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  14.    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
  15.    License for more details.
  16.  
  17.    You should have received a copy of the GNU General Public License
  18.    along with Bash; see the file COPYING.  If not, write to the Free
  19.    Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
  20.  
  21. /*  Write output in 128-byte chunks until we get a sigpipe or write gets an
  22.     EPIPE.  Then report how many bytes we wrote.  We assume that this is the
  23.     pipe size. */
  24.  
  25. #include <stdio.h>
  26. #include <sys/types.h>
  27. #include <signal.h>
  28. #include <errno.h>
  29.  
  30. #include "../command.h"
  31. #include "../general.h"
  32. extern int errno;
  33.  
  34. int nw;
  35.  
  36. sighandler
  37. sigpipe (sig)
  38.      int sig;
  39. {
  40.   fprintf (stderr, "%d\n", nw);
  41.   exit (0);
  42. }
  43.  
  44. main (argc, argv)
  45.      int argc;
  46.      char **argv;
  47. {
  48.   char buf[128];
  49.   register int i;
  50.  
  51.   for (i = 0; i < 128; i++)
  52.     buf[i] = ' ';
  53.  
  54.   signal (SIGPIPE, sigpipe);
  55.  
  56.   nw = 0;
  57.   for (;;)
  58.     {
  59.       int n;
  60.       n = write (1, buf, 128);
  61.       nw += n;
  62.     }
  63. }
  64.